package models

import (
	"time"

	"gorm.io/gorm"
)

// User 用户表
type User struct {
	ID        uint           `json:"id" gorm:"primaryKey"`
	CreatedAt time.Time      `json:"created_at"`
	UpdatedAt time.Time      `json:"updated_at"`
	DeletedAt gorm.DeletedAt `json:"deleted_at" gorm:"index"`

	OpenID     string `json:"openid" gorm:"column:openid;size:50;index"`
	UnionID    string `json:"unionid" gorm:"column:union_id;size:50;index"`
	SessionKey string `json:"session_key" gorm:"size:100"`
	
	// 用户基本信息
	Nickname  string `json:"nickname" gorm:"size:100"`
	Avatar    string `json:"avatar" gorm:"size:255"`
	Gender    int    `json:"gender" gorm:"default:0"` // 0:未知 1:男 2:女
	Phone     *string `json:"phone" gorm:"size:20"`
	Email     *string `json:"email" gorm:"size:100"`
	Birthday  *time.Time `json:"birthday"`
	
	// 微信用户信息
	Country   string `json:"country" gorm:"size:50"`
	Province  string `json:"province" gorm:"size:50"`
	City      string `json:"city" gorm:"size:50"`
	Language  string `json:"language" gorm:"size:20"`
	
	// 角色和状态
	Role      string `json:"role" gorm:"size:20;default:'user'"` // user:普通用户 admin:管理员
	Status    int    `json:"status" gorm:"default:1"` // 1:正常 0:禁用
	IsBlacklisted bool `json:"is_blacklisted" gorm:"column:is_blacklisted;default:false"` // 是否被拉黑
	IsStaff   bool   `json:"is_staff" gorm:"column:is_staff;default:false"` // 是否为美甲师
	
	// 关联
	// Orders    []Order `json:"orders,omitempty" gorm:"foreignKey:UserID"`
}

// 注意：不要定义 User 类型，避免 GORM 自动创建 users 表

// TableName 指定表名
func (User) TableName() string {
	return "users"
}
